package com.winglish.as3.loader 
{
	import com.winglish.as3.event.TossNumEvent;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.media.SoundChannel;
	import flash.media.Sound;
	/**
	 * ...
	 * @author charmjin
	 */
	public class SoundGroup extends Sprite
	{
		private var _soundArr:Array;
		private var _soundLoad:int;
		private var _url:Array;
		private var _channel:Array;
		private var _isRepeat: Boolean = false;
		private var _curSound: Sound;
		
		/**
		 * 다수의 사운드 로드.
		 * @param	urlArr 사운드 파일명 배열.
		 * @param   path 사운드 파일 경로.
		 */
		public function SoundGroup(urlArr:Array, path:String) 
		{
			if (urlArr) {
				_soundLoad = 0;
				_soundArr = new Array();
				_channel = new Array();
				_url = urlArr;
				for (var i:int = 0; i < urlArr.length;i++)
				{
					_soundArr[i] = new SoundPlay();
					_soundArr[i].addEventListener( "loadComplete" , soundLoadComplete  );
					_soundArr[i].addEventListener( TossNumEvent.TOSSNUM, soundPlayComplete)
					_soundArr[i].soundLoader(path + _url[i], i);
				
				}
			//	addEventListener(Event.ENTER_FRAME, loadProgress);
			}
		}
		
		/**
		 * 사운드 로드 진행 이벤트.
		 * @param	e
		 
		private function loadProgress(e:Event):void {
			var curByteLoaded:uint = 0;
			var totalByte:uint = 0;
			for (var i:int = 0; i < _url.length; i++) {
				curByteLoaded += _soundArr[i].bytesLoaded;
				totalByte += _soundArr[i].bytesTotal;
			}
			dispatchEvent(new TossArrayEvent(TossArrayEvent.TOSSARRAY, true, false, new Array(curByteLoaded, totalByte)));
		}
		*/
		
		/**
		 * 사운드 로드 완료 이벤트.
		 * @param	e
		 */
		private function soundLoadComplete(e:Event):void {
			_soundLoad++;
			trace("sound load : " + e.target.getUrl);
			dispatchEvent(new Event("soundLoad"));
			if (_soundLoad == _soundArr.length) {
//				removeEventListener(Event.ENTER_FRAME, loadProgress);
				dispatchEvent(new Event("soundAllLoad"));
			}
			
		}
		
		/**
		 * 사운드 재생 완료 이벤트.
		 * @param	e
		 */
		private function soundPlayComplete(e:TossNumEvent):void {
			dispatchEvent( new TossNumEvent(TossNumEvent.TOSSNUM, false, true, e.num) );
		}
		
		/**
		 * 특정 순서의 sound 재생.
		 * @param	num
		 */
		public function soundPlay(num:int):void {
			soundAllStop();
			_soundArr[num].soundPlay();
				
		}
	
		/**
		 * 특정 순서의 sound 정지.
		 * @param	num
		 */
		public function soundStop(num:int):void {
			_soundArr[num].soundStop();
		}
		
		/**
		 * 모든 사운드 정지.
		 */
		public function soundAllStop():void {
			for (var i:int = 0; i < _soundArr.length; i++) {
				soundStop(i);
			}
		}
		
		/**
		 * 사운드 수
		 */
		public function getSoundArrLen():int
		{
			return _soundArr.length;
		}
	}

}